#!/bin/bash

# 严格模式
set -euo pipefail
IFS=$'\n\t'

# 颜色定义
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# 配置
REMOTE_USER="pyapp"
REMOTE_HOST="192.168.10.74"
REMOTE_PORT="22"
REMOTE_PATH="/home/pyapp/www/cardsys_test"
FRONTEND_DIR="frontend"
DIST_DIR="dist"
PACKAGE_NAME="frontend.tar.gz"

# 日志函数
log_success() {
    echo -e "${GREEN}✅ $1${NC}"
}

log_error() {
    echo -e "${RED}❌ $1${NC}"
    exit 1
}

log_warn() {
    echo -e "${YELLOW}⚠️  $1${NC}"
}

# 检查必要工具
command -v npm >/dev/null 2>&1 || log_error "需要 npm 但未安装"
command -v tar >/dev/null 2>&1 || log_error "需要 tar 但未安装"
command -v scp >/dev/null 2>&1 || log_error "需要 scp 但未安装"
command -v ssh >/dev/null 2>&1 || log_error "需要 ssh 但未安装"

# 检查前端目录
[ ! -d "$FRONTEND_DIR" ] && log_error "前端目录不存在: $FRONTEND_DIR"
[ ! -f "$FRONTEND_DIR/package.json" ] && log_error "package.json 不存在"

# 清理之前的构建
echo "清理之前的构建..."
rm -rf "$FRONTEND_DIR/$DIST_DIR" "$PACKAGE_NAME"

# 安装依赖
echo "安装依赖..."
cd "$FRONTEND_DIR"
npm install || log_error "npm install 失败"
log_success "依赖安装完成"

# 构建项目
echo "构建项目..."
npm run build || log_error "构建失败"
[ ! -d "$DIST_DIR" ] && log_error "构建后的 dist 目录不存在"
log_success "项目构建完成"

# 检查关键文件
echo "检查构建文件..."
[ ! -f "$DIST_DIR/index.html" ] && log_error "index.html 不存在"
[ ! -d "$DIST_DIR/assets" ] && log_error "assets 目录不存在"
log_success "构建文件检查通过"

# 打包
echo "打包构建文件..."
cd "$DIST_DIR"
tar czf "../../$PACKAGE_NAME" * || log_error "打包失败"
cd ../..
log_success "打包完成：$PACKAGE_NAME"

# 检查远程连接
echo "检查远程连接..."
ssh -p "$REMOTE_PORT" "$REMOTE_USER@$REMOTE_HOST" "echo '连接测试'" >/dev/null 2>&1 || log_error "无法连接到远程服务器"
log_success "远程连接正常"

# 上传文件
echo "上传文件到服务器..."
scp -P "$REMOTE_PORT" "$PACKAGE_NAME" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH/" || log_error "文件上传失败"
log_success "文件上传完成"

# 执行远程部署
echo "执行远程部署..."
ssh -p "$REMOTE_PORT" "$REMOTE_USER@$REMOTE_HOST" "cd $REMOTE_PATH && ./deploy.sh" || {
    log_error "远程部署失败"
    log_warn "请手动检查服务器状态"
    exit 1
}

# 清理本地文件
echo "清理本地文件..."
rm -f "$PACKAGE_NAME"
log_success "本地文件已清理"

echo -e "\n${GREEN}✨ 完整流程执行完成！${NC}"
echo "前端已成功部署到：http://$REMOTE_HOST:8501" 